Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / repository_http_standalone.py

Displaying Raw • Download


meshchatx/repository_http_standalone.py e41daa5b65e07a5baa1aaad32d97f90482f1cd1c (e41daa5b) Text, 1.87 KB

T8b949e# SPDX-License-Identifier: 0BSD

T8b949e"""Plain HTTP file server for a MeshChatX repository-server directory."""

Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations

Tff7b72import T7ee787argparse
Tff7b72import T7ee787os
Tff7b72import T7ee787socketserver

Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787repository_server_manager Tff7b72import Tb4b4b4(
Te6edf3make_repository_http_request_handlerTb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8ffmainTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Te6edf3parser Tff7b72= Te6edf3argparseTff7b72.Td2a8ffArgumentParserTb4b4b4(
Te6edf3descriptionTff7b72=Ta5d6ff"Ta5d6ffServe MeshChatX repository-server files over HTTP without TLS.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--directoryTa5d6ff"Tb4b4b4,
Te6edf3requiredTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffPath to the identityTa5d6ff'Ta5d6ffs repository-server folder (contains uploads/ and bundled/).Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--hostTa5d6ff"Tb4b4b4,
Te6edf3defaultTff7b72=Ta5d6ff"Ta5d6ff0.0.0.0Ta5d6ff"Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffBind address (default 0.0.0.0).Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--portTa5d6ff"Tb4b4b4,
Tffa657typeTff7b72=Tffa657intTb4b4b4,
Te6edf3defaultTff7b72=T79c0ff8787Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffTCP port (default 8787).Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--public-dirTa5d6ff"Tb4b4b4,
Te6edf3defaultTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff"Ta5d6ffMeshChatX public directory (for repository-server-index.html when not next to source).Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3args Tff7b72= Te6edf3parserTff7b72.Td2a8ffparse_argsTb4b4b4(Tb4b4b4)
Te6edf3root Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffabspathTb4b4b4(Te6edf3argsTff7b72.Td2a8ffdirectoryTb4b4b4)
Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3rootTb4b4b4)Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffNot a directory: Tffd700{Te6edf3rootTffd700}Ta5d6ff"Tb4b4b4, Te6edf3flushTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72return T79c0ff2

Te6edf3pub Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffabspathTb4b4b4(Te6edf3argsTff7b72.Td2a8ffpublic_dirTb4b4b4) Tff7b72if Te6edf3argsTff7b72.Td2a8ffpublic_dir Tff7b72else Tff7b72None
Te6edf3handler_cls Tff7b72= Te6edf3make_repository_http_request_handlerTb4b4b4(Te6edf3rootTb4b4b4, Te6edf3public_dirTff7b72=Te6edf3pubTb4b4b4)
Te6edf3httpd Tff7b72= Te6edf3socketserverTff7b72.Td2a8ffThreadingTCPServerTb4b4b4(Tb4b4b4(Te6edf3argsTff7b72.Td2a8ffhostTb4b4b4, Te6edf3argsTff7b72.Td2a8ffportTb4b4b4)Tb4b4b4, Te6edf3handler_clsTb4b4b4)
Te6edf3httpdTff7b72.Td2a8ffallow_reuse_address Tff7b72= Tff7b72True
Tffa657printTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffServing Tffd700{Te6edf3rootTffd700}Ta5d6ff at http://Tffd700{Te6edf3argsTff7b72.Td2a8ffhostTffd700}Ta5d6ff:Tffd700{Te6edf3argsTff7b72.Td2a8ffportTffd700}Ta5d6ff/ (uploads/ and bundled/ subdirs)Ta5d6ff"Tb4b4b4,
Te6edf3flushTff7b72=Tff7b72TrueTb4b4b4,
Tb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3httpdTff7b72.Td2a8ffserve_foreverTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149KeyboardInterruptTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffStopping.Ta5d6ff"Tb4b4b4, Te6edf3flushTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72return T79c0ff0
Tff7b72finallyTb4b4b4:
Te6edf3httpdTff7b72.Td2a8ffserver_closeTb4b4b4(Tb4b4b4)
Tff7b72return T79c0ff0


Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Tff7b72raise Tf85149SystemExitTb4b4b4(Te6edf3mainTb4b4b4(Tb4b4b4)Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────